자바와 자바스크립트의 관계
탄생
1995년, 넷스케이프 내비게이터는 브라우저에 넣을 언어로 스킴을 고려하고 있었다. 만약 스킴이 탑재됐다면 함수형 언어가 크게 대중화될 뻔 했다. 그런데 스킴 대신 자바 애플릿과 “자바 비슷한” 스크립트 언어, 이렇게 두 엔진을 탑재하자는 식으로 방향이 바뀌었고, 그 결과 자바랑 비슷한 문법을 가진 모카라는 언어가 탄생한다(난 이건 구경 못 해봤다). 모카는 곧 라이브스크립트(LiveScript)로 이름을 바꾸었다가 최종적으로는 자바스크립트로 이름을 다시 바꾼다. 자바와 비슷하게 만든 탓에 int, float, synchronized, transient 등 자바에서만 쓰는 키워드들도 자바스크립트에서 한동안 예약어로 잡혀 있었다.
(자바스크립트의 상표권은 자바를 개발했던 썬 마이크로시스템즈가 가지고 있었고, 오라클이 썬을 인수하면서 현자는 오라클이 상표권을 가지고 있다. 2026년 현재 상표권 무효화 및 포기를 요구하는 소송과 청원이 진행 중이다. 자바스크립트 표준의 이름이 ECMAScript인 이유.)
라이브러리
자바스크립트는 자바의 문법 뿐 아니라 JDK 1.0의 일부 API를 거의 그대로 가져오기도 했다(예를 들면 자바의 java.util.Date 클래스. 할많하않). 브라우저에서 자바가 잘 실행되던 시절(자바 애플릿 안녕?)이 있었는데, “LiveConnect”라는 기술을 통해 자바-자바스크립트 간 양방향 호출도 됐더랬다.
엔진
자바로 구현한 자바스크립트 엔진인 Rhino는 무려 1997년부터 존재했고 노드.js가 있기 전 서버 측에서 자바스크립트를 실행하기 위한 그럭저럭 괜찮은 솔루션 중 하나였다. 나는 2000년대 중반 즈음 Rhino를 알게 되었는데, 간혹 유용하게 써먹었던 기억이 난다. 그 전까지는 마이크로소프트의 JS 구현인 JScript가 서버측 자바스크립트를 실행하는 (아마도) 가장 안정적인 플랫폼이었던 것 같다. (Windows Scripting Host 안녕? IIS 안녕?) Rhino는 이후 javax.script에 기본 탑재되었다가 훗날 제거됐다. 지금은 GraalJS가 비슷한 포지션.
1996년에도 넷스케이프의 LiveWire라는 서버 측 자바스크립트 엔진이 있었다고 하는데 나는 써보지 못했다.
한편, 자바의 HotSpot VM 개발을 이끌었던 Lars Bak은 훗날 구글로 이직하여 크롬의 자바스크립트 엔진인 V8을 개발한다.
결론
이런저런 의미에서 두 언어는 서로 제법 관련이 많다.